﻿package com.eitb.programas.olentzero09{
	import flash.display.*;
	import flash.text.*;
	import flash.events.*;
	import flash.media.*;
	import flash.net.*;

	import com.eitb.programas.olentzero09.objetos.*;
	import com.eitb.programas.olentzero09.events.*;

	public class DialogoJuego extends Sprite implements IVistaJuego {
		private var cJuego:IControladorJuego;
		private var cOlentzero:IControladorOlentzero;
		private var cOlentzeroAPie:IControladorOlentzero;
		private var cOlentzeroOvni:IControladorOlentzero;
		private var cObjetos:IControladorObjetos;
		

		public function DialogoJuego():void {
			this.cacheAsBitmap = true;
		}

		// INIT COMPONENTES
		public function initControlador(cJuego:IControladorJuego):void {
			this.cJuego=cJuego;
		}
		public function initControladorOlentzero(cOlentzero:IControladorOlentzero):void {
			this.cOlentzero=cOlentzero;
		}
		public function initControladorOlentzeroAPie(cOlentzeroAPie:IControladorOlentzero):void {
			this.cOlentzeroAPie=cOlentzeroAPie;
		}
		public function initControladorOlentzeroOvni(cOlentzeroOvni:IControladorOlentzero):void {
			this.cOlentzeroOvni=cOlentzeroOvni;
		}
		public function initControladorObjetos(cObjetos:IControladorObjetos):void {
			this.cObjetos=cObjetos;
		}		
		// INIT COMPONENTES

		// INIT PARAMETROS
		public function initEvents():void {
			this.addEventListener(Event.ENTER_FRAME,this.cJuego.onEnterFrame);
		}
		// INIT PARAMETROS

		// IVistaJuego
		public function setVisible(visible:Boolean):void {
			this.visible=visible;
		}
		public function setPuntos(puntos:String):void {
			this.puntosTxt.text = puntos;
		}
		public function setVidas(vidas:String):void {
			this.vidaTxt.text = vidas;
		}
		public function getNumChilds():int {
			return this.numChildren;
		}
		public function onColision(evt:OlentzeroEvent):void {
			var infoText:InfoText = new InfoText();
			infoText.initLimites({y:evt.y-50});
			infoText.initPosition(evt.x,evt.y);
			
			if (evt.colision == "regalo") {
				ModeloJuego.puntos+=100;
				infoText.initInfo("+100");
				this.addChild(infoText);
			} else if (evt.colision == "palote") {
				ModeloJuego.puntos+=500;
				infoText.initInfo("+500");
				this.addChild(infoText);
			} else if (evt.colision == "enemigo") {
				ModeloJuego.vidas--;
				infoText.initInfo(":(");
				this.addChild(infoText);
				this.cObjetos.startOvnis();
			} else if (evt.colision == "ovni") {
				infoText.initInfo("yeah!");
				this.addChild(infoText);
				this.cObjetos.stopOvnis();
			} else if (evt.colision == "vidaExtra") {
				ModeloJuego.vidas++;
				infoText.initInfo(":)");
				this.addChild(infoText);
			}
				
		}
		public function setOlentzero(cOlentzero:IControladorOlentzero, vOlentzero:IVistaOlentzero):void {
			if (null != this.cOlentzero) {
				this.removeEventListener(Event.ENTER_FRAME,this.cOlentzero.onEnterFrame);
				this.removeEventListener(MouseEvent.MOUSE_DOWN,this.cOlentzero.onMouseDown);
				this.cOlentzero.finalize();
			}
			this.cOlentzero = cOlentzero;
			this.cJuego.setVistaOlentzero(vOlentzero);
			this.addEventListener(Event.ENTER_FRAME,this.cOlentzero.onEnterFrame);
			this.addEventListener(MouseEvent.MOUSE_DOWN,this.cOlentzero.onMouseDown);
		}
		public function finalize():void {
			try {
				this.removeEventListener(Event.ENTER_FRAME,this.cJuego.onEnterFrame);
				this.removeEventListener(Event.ENTER_FRAME,this.cOlentzero.onEnterFrame);
				this.removeEventListener(MouseEvent.MOUSE_DOWN,this.cOlentzero.onMouseDown);
				this.cObjetos.finalize();
				this.cOlentzero.finalize();
				this.parent.removeChild(this);
			} catch (e:Error) {
				trace(e);
			}
		}		
		// IVistaJuego
	}
}